﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MoroMoro.Samples.ToDoList.Domain.ToDos;

namespace MoroMoro.Samples.ToDoList.Presentation.Models.ToDos
{
    /// <summary>
    /// <see cref="ToDo"/> に対する拡張機能を定義します。
    /// </summary>
    public static class ToDoExtension
    {
        /// <summary>
        /// <see cref="ToDo.State">ToDo の状態</see>と表示用テキストの辞書を取得します。
        /// </summary>
        public static readonly Dictionary<ToDoState, string> StateDictionary = new Dictionary<ToDoState, string>
        {
            { ToDoState.Untouched, "未着手" },
            { ToDoState.Touched,   "着手" },
            { ToDoState.Completed, "完了" },
        };

        /// <summary>
        /// <see cref="ToDo.State">ToDo の状態</see>を表示用テキストとして取得します。
        /// </summary>
        /// <param name="source"><see cref="ToDo"/>。</param>
        /// <returns><see cref="ToDo.State">ToDo の状態</see>の表示用テキスト。</returns>
        /// <exception cref="System.ArgumentNullException">source が null です。</exception>
        public static string GetStateText(this ToDo source)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            return StateDictionary[source.State];
        }
    }
}
